// 通知类型枚举
export enum NotificationType {
  TASK_ASSIGNED = 'task_assigned',
  TASK_COMPLETED = 'task_completed',
  TASK_COMMENTED = 'task_commented',
  TASK_DUE_SOON = 'task_due_soon',
  PROJECT_INVITATION = 'project_invitation',
  PROJECT_UPDATE = 'project_update',
  MENTION = 'mention',
  TEAM_JOIN = 'team_join',
  DOCUMENT_SHARED = 'document_shared'
}

// 通知接口
export interface Notification {
  id: string;
  type: NotificationType;
  title: string;
  content: string;
  createdAt: Date;
  read: boolean;
  actionUrl?: string;
  projectId?: string;
  taskId?: string;
  documentId?: string;
  sender: {
    id: string;
    name: string;
    image?: string;
  };
}

// 通知过滤选项
export interface NotificationFilters {
  read?: boolean;
  type?: NotificationType[];
  startDate?: Date;
  endDate?: Date;
  projectId?: string;
}

// 通知统计信息
export interface NotificationStats {
  total: number;
  unread: number;
  byType: Record<NotificationType, number>;
}

// 通知设置
export interface NotificationSettings {
  email: {
    taskAssigned: boolean;
    taskComments: boolean;
    mentions: boolean;
    projectUpdates: boolean;
    teamChanges: boolean;
    dailyDigest: boolean;
    weeklyDigest: boolean;
  };
  push: {
    taskAssigned: boolean;
    taskComments: boolean;
    mentions: boolean;
    projectUpdates: boolean;
    teamChanges: boolean;
  };
  desktop: {
    enabled: boolean;
    taskAssigned: boolean;
    taskComments: boolean;
    mentions: boolean;
    projectUpdates: boolean;
    teamChanges: boolean;
  };
} 